From 36197fb22cafa3af6cb3e144c7e58aa23067c47a Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Tue, 4 Nov 2008 00:04:23 +0000 Subject: [PATCH] added missing, needed conversion. * extensions/gegl-fixups.c: (conv_rgbaF_rgbAF), (init): added missing, needed conversion. svn path=/trunk/; revision=351 --- ChangeLog | 5 +++++ extensions/gegl-fixups.c | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/ChangeLog b/ChangeLog index c4753aa..f3be51f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-11-04 Øyvind Kolås + + * extensions/gegl-fixups.c: (conv_rgbaF_rgbAF), (init): added missing, + needed conversion. + 2008-10-01 Øyvind Kolås * COPYING.LESSER: renamed to .. diff --git a/extensions/gegl-fixups.c b/extensions/gegl-fixups.c index 084db94..49480ac 100644 --- a/extensions/gegl-fixups.c +++ b/extensions/gegl-fixups.c @@ -439,6 +439,30 @@ conv_bgrA8_rgba8 (unsigned char *srcc, } +static long +conv_rgbaF_rgbAF (unsigned char *srcc, + unsigned char *dstc, + long samples) +{ + float *src = (void *) srcc; + float *dst = (void *) dstc; + long n = samples; + + while (n--) + { + float alpha = src[3]; + dst[0] = src[0] * alpha; + dst[1] = src[1] * alpha; + dst[2] = src[2] * alpha; + dst[3] = alpha; + src += 4; + dst += 4; + } + return samples; +} + + + #define conv_rgb8_rgbAF conv_rgb8_rgbaF int init (void); @@ -501,6 +525,7 @@ init (void) #define o(src, dst) \ babl_conversion_new (src, dst, "linear", conv_ ## src ## _ ## dst, NULL) + o (rgbaF, rgbAF); o (rgb8, rgbaF); o (rgb8, rgbAF); o (rgba8, rgbaF); -- 2.30.2